home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / libs / intuisup.lha / Intuisup / Library / BenchmarkModula / IntuiSupInterface.def < prev    next >
Text File  |  1992-06-20  |  34KB  |  1,080 lines

  1. (*
  2.                      IntuiSup library interface
  3.  
  4.               Para usar con Modula-2 Software Construction Set                
  5.    -----------------------------------------------------------------------
  6.  
  7.     por:   Mauricio Hunt R.
  8.                Apt 856 - 2150, Moravia,
  9.                San Jose, Costa Rica
  10.                Central America
  11.  
  12.    -----------------------------------------------------------------------
  13.  
  14.         Intuisup library por:
  15.  
  16.     Torsten Jürgeleit
  17.     Am Sandberg 4
  18.     W-5270 Gummersbach
  19.     Germany
  20.  
  21.    Gracias Torsten !
  22. *)
  23.  
  24. DEFINITION MODULE IntuiSupInterface;
  25.  
  26. FROM SYSTEM    IMPORT ADDRESS, LONGWORD, BYTE;
  27. FROM Intuition IMPORT IDCMPFlags, IDCMPFlagsSet, ImagePtr, ScreenPtr, 
  28.                   WindowPtr, NewWindow, MenuPtr, MenuItemPtr, IntuiMessagePtr,
  29.                   GadgetPtr;
  30. FROM Text      IMPORT TextAttrPtr, TextFontPtr;
  31. FROM DiskFont  IMPORT AvailFontsHeaderPtr;
  32. FROM Lists     IMPORT ListPtr;
  33. FROM Ports     IMPORT MsgPortPtr;
  34. FROM Libraries IMPORT LibraryPtr;
  35.  
  36. CONST
  37.   IntuiSupName     = "intuisup.library";
  38.   IntuiSupVersion  = 4D;
  39.  
  40. VAR
  41.   IntuiSupBase:LibraryPtr;
  42.  
  43. CONST
  44.  
  45.   (*
  46.     para Render.
  47.   *)
  48.  
  49.   (* usar esquina sup izq de ventana interna como (0,0) *)
  50.   RenderInfoFlagInnerWindow  = 1;
  51.  
  52.   (* llenar el fondo de la ventana con otro color *)
  53.   RenderInfoFlagBackFill = 2;
  54.  
  55.   (* buscar fonts disponibles y usar esto para IAskfont/IOpenfont *)
  56.   RenderInfoFlagAvailFonts = 4;
  57.  
  58.   IntuiSupDataEnd = 0; (* marca el fin del arreglo de datos *)
  59.  
  60.   (*
  61.     flags para open window
  62.   *)
  63.  
  64.   (* centrar la ventana en la pantalla *)
  65.   OpenWindowFlagCenterWindow = 1;
  66.  
  67.   (* usar los pens para render detail y backfill *)
  68.   OpenWindowFlagRenderPens   = 2;
  69.  
  70.   (* centrar la ventana sobre la posicion actual del pointer *)
  71.   OpenWindowFlagCenterMouse  = 4;
  72.  
  73.   (*
  74.     flags para clear window
  75.   *)
  76.  
  77.  
  78.   (* no cambiar modo de dibujo *)
  79.   ClearWindowFlagCustomDrawMode = 1;
  80.  
  81.   (* no cambiar el color de fondo *)
  82.   ClearWindowFlagCustomColor = 2;
  83.  
  84.   (* usar el color background normal *)
  85.   ClearWindowFlagNormalColor = 4;
  86.  
  87.   (* usar standard raster para el bacground de la ventana *)
  88.   ClearWindowFlagUseRaster   = 8;
  89.  
  90.   (* no sume el offset del borde de la ventana a la posicion sup.izq dada *)
  91.   ClearWindowFlagAbsolutePos = 16;
  92.  
  93.   (* usar el color 1 para el texto *)
  94.   ClearWindowFlagText1Color  = 32;
  95.  
  96.   (* usar el color 2 para el texto *)
  97.   ClearWindowFlagText2Color  = 64;
  98.  
  99.   (*
  100.     para texto.
  101.   *)
  102.  
  103.   TextDataTypeText           = 1;
  104.   TextDataTypeNumUnsignedDec = 2;
  105.   TextDataTypeNumSignedDec   = 3;
  106.   TextDataTypeNumHex         = 4;
  107.   TextDataTypeNumBin         = 5;
  108.  
  109.   TextDataFlagBold          = 1;
  110.   TextDataFlagItalic        = 2;
  111.   TextDataFlagUnderLined    = 4;
  112.   TextDataFlagAbsolutePos   = 8;   (* se da la posicion absoluta no offsets *)
  113.   TextDataFlagCenter        = 16;  (* centrar el texto en la ventana *)
  114.   TextDataFlagPlaceLeft     = 32;  (* hacia la izquierda, segun esquina *)
  115.   TextDataFlagColor2        = 64;  (* usar 2do pen *)
  116.   TextDataFlagComplement    = 128; (* complementar pens *)
  117.   TextDataFlagBackFill      = 256; (* usar Jam2 *)
  118.   TextDataFlagNoPrint       = 512; (* no imprimir texto, solo calcular ancho *)
  119.   TextDataFlagNumIdentifier = 1024;(* convertir el numero con identificadores de ensamblador*)
  120.   TextDataFlagNumCStyle     = 2048;(* usar identificadores de C '0x' para numero hexadecimales *)
  121.   TextDataFlagNumLeadingZeroes = 4096; (* convertir numeros con ceros al inicio *)
  122.   TextDataFlagNumUpperCase = 8192;  (* usar mayuscula para caracteres hexadecimales *)
  123.  
  124.   ConvertFlagIdentifier    = 1; (* convertir el numero con identificadores de ensamblador*)
  125.   ConvertFlagCStyle        = 2; (* usar identificadores de C '0x' para numero hexadecimales *)
  126.   ConvertFlagLeadingZeroes = 4; (* convertir numeros con ceros al inicio *)
  127.   ConvertFlagUpperCase     = 8; (* usar mayuscula para caracteres hexadecimales *)
  128.  
  129. TYPE
  130.   TextDataPtr = POINTER TO TextData;
  131.  
  132.   TextData = RECORD
  133.                tdType     : CARDINAL;
  134.                tdFlags    : CARDINAL;
  135.                tdLeftEdge : INTEGER;
  136.                tdTopEdge  : INTEGER;
  137.                tdText     : ADDRESS;
  138.                tdTextAttr : TextAttrPtr;
  139.              END;
  140.  
  141.   (*
  142.     los bordes.
  143.   *)
  144.  
  145. CONST
  146.   BorderDataTypeBox1Out = 1;
  147.   BorderDataTypeBox1In  = 2;
  148.   BorderDataTypeBox2Out = 3;
  149.   BorderDataTypeBox2In  = 4;
  150.  
  151. TYPE
  152.   BorderDataPtr = POINTER TO BorderData;
  153.  
  154.   BorderData = RECORD
  155.                  bdType     : CARDINAL;
  156.                  bdLeftEdge : INTEGER;
  157.                  bdTopEdge  : INTEGER;
  158.                  bdWidth    : CARDINAL;
  159.                  bdHeight   : CARDINAL
  160.                END;
  161.  
  162.   (*
  163.     los gadgets.
  164.   *)
  165.  
  166. TYPE
  167.   ID = LONGCARD;
  168.  
  169. CONST
  170.   H = 16777216D; (* x << 24 *)
  171.   M = 65536D;    (* x << 16 *)
  172.   L = 256D;      (* x << 8  *)
  173.  
  174.   ISupID = ID('I')*H + ID('S')*M + ID('U')*L + ID('P');
  175.  
  176.   GadgetDataTypeButton   = 1;  (* button gadget *)
  177.   GadgetDataTypeCheck    = 2;  (* checkmark gadget *)
  178.   GadgetDataTypeMx       = 3;  (* mutual exclude gadget *)
  179.   GadgetDataTypeString   = 4;  (* string input gadget *)
  180.   GadgetDataTypeInteger  = 5;  (* integer input gadget *)
  181.   GadgetDataTypeSlider   = 6;  (* slider gadget *)
  182.   GadgetDataTypeScroller = 7;  (* scroller gadget *)
  183.   GadgetDataTypeCycle    = 8;  (* cycle gadget *)
  184.   GadgetDataTypeCount    = 9;  (* count gadget *)
  185.   GadgetDataTypeListView = 10; (* list view gadget *)
  186.   GadgetDataTypePalette  = 11; (* palette gadget *)
  187.  
  188.   GadgetDataFlagDisabled             = 1D;
  189.   GadgetDataFlagNoBorder             = 2D;
  190.   GadgetDataFlagHighComp             = 4D;
  191.   GadgetDataFlagOrientationVert      = 8D;
  192.   GadgetDataFlagHotKey               = 16D;
  193.   GadgetDataFlagNoTextOutput         = 32D;
  194.   GadgetDataFlagTextLeft             = 64D;
  195.   GadgetDataFlagTextRight            = 128D;
  196.   GadgetDataFlagTextAbove            = 256D;
  197.   GadgetDataFlagTextBelow            = 512D;
  198.   GadgetDataFlagTextColor2           = 1024D;
  199.   GadgetDataFlagButtonToggle         = 2048D;
  200.   GadgetDataFlagButtonImage          = 4096D;
  201.   GadgetDataFlagInputAutoActive      = 8192D;
  202.   GadgetDataFlagStringUnsignedDec    = 16384D;
  203.   GadgetDataFlagStringSignedDec      = 32768D;
  204.   GadgetDataFlagStringHex            = 65536D;
  205.   GadgetDataFlagStringBin            = 131072D;
  206.   GadgetDataFlagScrollerNoArrows     = 262144D;
  207.   GadgetDataFlagCountSignedDec       = 524288D;
  208.   GadgetDataFlagListViewReadOnly     = 1048576D;
  209.   GadgetDataFlagListViewShowSelected = 2097152D;
  210.   GadgetDataFlagPaletteNoIndicator   = 4194304D;
  211.   GadgetDataFlagPaletteIndicatorTop  = 8388607D;
  212.   GadgetDataFlagMovePointer          = 16777216D;
  213.   GadgetDataFlagNoClear              = 33554432D;
  214.   GadgetDataFlagSliderImage          = 67108864D;
  215.   GadgetDataFlagListViewEntryColor   = 134217728D;
  216.   GadgetDataFlagInputCenter          = 268435456D;
  217.   GadgetDataFlagInputRight           = 536870912D;
  218.  
  219.   GadgetIDCMPFlagsButton   = IDCMPFlagsSet{GadgetUp,RawKey};
  220.   GadgetIDCMPFlagsCheck    = IDCMPFlagsSet{GadgetDown,RawKey};
  221.   GadgetIDCMPFlagsMx       = IDCMPFlagsSet{GadgetDown,RawKey};
  222.   GadgetIDCMPFlagsString   = IDCMPFlagsSet{GadgetUp,RawKey};
  223.   GadgetIDCMPFlagsInteger  = IDCMPFlagsSet{GadgetUp,RawKey};
  224.   GadgetIDCMPFlagsSlider   = IDCMPFlagsSet{GadgetUp,MouseMove,RawKey};
  225.   GadgetIDCMPFlagsScroller = IDCMPFlagsSet{GadgetDown,GadgetUp,MouseMove,
  226.                                            IntuiTicks,RawKey};
  227.   GadgetIDCMPFlagsCycle    = IDCMPFlagsSet{GadgetUp,RawKey};
  228.   GadgetIDCMPFlagsCount    = IDCMPFlagsSet{GadgetDown, GadgetUp, MouseMove,
  229.                                            RawKey};
  230.   GadgetIDCMPFlagsListView = IDCMPFlagsSet{GadgetDown, GadgetUp, MouseMove,
  231.                                            IntuiTicks,RawKey};
  232.   GadgetIDCMPFlagsPalette  = IDCMPFlagsSet{GadgetUp,RawKey};
  233.   GadgetIDCMPFlagsAll      = IDCMPFlagsSet{GadgetDown, GadgetUp, MouseMove,
  234.                                            IntuiTicks, RawKey};
  235.  
  236.   (* se usa en SetGadgetAtributtes *)
  237.   UseCurrentValue = 2147483648D; (* 1L << 31 *)
  238.  
  239. TYPE
  240.   DADDRESS = POINTER TO ADDRESS;
  241.  
  242.   GadgetDataPtr = POINTER TO GadgetData;
  243.  
  244.   GadgetData = RECORD
  245.                   gdType     : LONGCARD;
  246.                   gdFlags    : LONGCARD;
  247.                   gdLeftEdge : CARDINAL;
  248.                   gdTopEdge  : CARDINAL;
  249.                   gdWidth    : CARDINAL;
  250.                   gdHeight   : CARDINAL;
  251.                   gdText     : ADDRESS;
  252.                   gdTextAttr : TextAttrPtr;
  253.  
  254.                   CASE :CARDINAL OF
  255.                     1 : gdData:RECORD
  256.                                  gdData1 : LONGINT;
  257.                                  gdData2 : LONGINT;
  258.                                  gdData3 : ADDRESS
  259.                                END |
  260.                     2: gdButtonData : RECORD
  261.                                         gdButtonSelected     : LONGCARD;
  262.                                         gdButtonNormalRender : ImagePtr;
  263.                                         gdButtonSelectRender : ImagePtr
  264.                                       END |
  265.                     3: gdCheckData : RECORD
  266.                                        gdCheckSelected : LONGCARD;
  267.                                        gdCheckPad1     : LONGCARD;
  268.                                        gdCheckPad2     : LONGCARD
  269.                                      END |
  270.                     4: gdMXData : RECORD
  271.                                     gdMXSpacing     : LONGCARD;
  272.                                     gdMXActiveEntry : LONGCARD;
  273.                                     gdMXTextArray   : DADDRESS
  274.                                   END |
  275.                     5: gdInputData : RECORD
  276.                                        gdInputLen          : LONGCARD;
  277.                                        gdInputActiveNext   : CARDINAL;
  278.                                        gdInputActivatePrev : CARDINAL;
  279.                                        gdInputDefault      : ADDRESS;
  280.                                      END |
  281.                     6: gdSliderData : RECORD
  282.                                         gdSliderMin   : LONGINT;
  283.                                         gdSliderMax   : LONGINT;
  284.                                         gdSliderLevel : LONGINT
  285.                                       END |
  286.                     7: gdScrollerData : RECORD
  287.                                           gdScrollerVisible : LONGCARD;
  288.                                           gdScrollerTotal   : LONGCARD;
  289.                                           gdScrollerTop     : LONGCARD
  290.                                         END |
  291.                     8: gdCycleData : RECORD
  292.                                        gdCycleSpacing   : LONGCARD;
  293.                                        gdCycleActive    : LONGCARD;
  294.                                        gdCycleTextArray : DADDRESS
  295.                                      END |
  296.                     9: gdCountData : RECORD
  297.                                        gdCountMin   : LONGCARD;
  298.                                        gdCountMax   : LONGCARD;
  299.                                        gdCountValue : LONGCARD
  300.                                      END |
  301.                     10: gdListViewData : RECORD
  302.                                            gdListViewSpacing : LONGCARD;
  303.                                            gdListViewTop     : LONGCARD;
  304.                                            gdListViewList    : ListPtr
  305.                                          END |
  306.                     11: gdPaletteData : RECORD
  307.                                           gdPaletteDepth       : LONGCARD;
  308.                                           gdPaletteColorOffset : LONGCARD;
  309.                                           gdPaletteActiveColor : LONGCARD
  310.                                         END
  311.                   END (* case *)
  312.                 END;
  313.  
  314.   (*
  315.     para auto request
  316.   *)
  317.  
  318. CONST
  319.   AutoReqFlagBackFill       = 1;
  320.   AutoReqFlagRenderPens     = 2;
  321.   AutoReqFlagTextCenter     = 4;
  322.   AutoReqFlagTextColor2     = 8;
  323.   AutoReqFlagHotKey         = 16;
  324.   AutoReqFlagBeep           = 32;
  325.   AutoReqFlagMovePointerPos = 64;
  326.   AutoReqFlagMovePointerNeg = 128;
  327.   AutoReqFlagDrawRaster     = 256; (* dibujar raster alrededor de area de texro *)
  328.   AutoReqFlagCenterMouse    = 512;
  329.  
  330.   (*
  331.     para requester.
  332.   *)
  333.  
  334.   ReqDataFlagBackFill     = 1;
  335.   ReqDataFlagRenderPens   = 2;
  336.   ReqDataFlagInnerWindow  = 4;
  337.   ReqDataFlagAvailFonts   = 8;
  338.   ReqDataFlagCenterScreen = 16;
  339.   ReqDataFlagDragGadget   = 32;
  340.   ReqDataFlagDepthGadget  = 64;
  341.   ReqDataFlagDrawRaster   = 128; (* dibujar raster alrededor de area de texto *)
  342.   ReqDataFlagCenterWindow = 256; (* centrar el requester en la ventana *)
  343.   ReqDataFlagCenterMouse  = 512; (* centrar el requester sobre la posicion actual de pointer *)
  344.  
  345.   (* estructuras del requester *)
  346.  
  347. TYPE
  348.   RequesterDataPtr = POINTER TO RequesterData;
  349.  
  350.   RequesterData = RECORD
  351.                     rdLeftEdge: INTEGER;
  352.                     rdTopEdge : INTEGER;
  353.                     rdWidth   : INTEGER;
  354.                     rdHeight  : INTEGER;
  355.                     rdFlags   : LONGCARD;
  356.                     rdTitle   : ADDRESS;
  357.                     rdTexts   : TextDataPtr;
  358.                     rdBorders : BorderDataPtr;
  359.                     rdGadgets : GadgetDataPtr
  360.                   END;
  361.   (*
  362.     los menues.
  363.   *)
  364.  
  365. CONST
  366.   MenuDataTypeTitle   = 1;
  367.   MenuDataTypeItem    = 2;
  368.   MenuDataTypeSubItem = 3;
  369.  
  370.   MenuDataFlagDisabled   = 1;
  371.   MenuDataFlagAtributte  = 2;
  372.   MenuDataFlagSelected   = 4;
  373.   MenuDataFlagEmptyLine  = 8;
  374.   MenuDataFlagHighNone   = 16;
  375.   MenuDataFlagHighBox    = 32;
  376.   MenuDataFlagTextColor2 = 64;
  377.  
  378. TYPE
  379.   MenuDataPtr = POINTER TO MenuData;
  380.  
  381.   MenuData = RECORD
  382.                mdType          : CARDINAL;
  383.                mdFlags         : CARDINAL;
  384.                mdName          : ADDRESS;
  385.                mdCommandKey    : ADDRESS;
  386.                mdMutualExclude : LONGCARD
  387.              END;
  388.  
  389.   (*
  390.     para Text file.
  391.   *)
  392.  
  393. CONST
  394.   TextFileFlagTrimLine         = 1;
  395.   TextFileFlagSkipComments     = 2;
  396.   TextFileFlagSkipEmptyLines   = 4;
  397.   TextFileFlagLineContinuation = 8;
  398.  
  399.   TextFileStatusNormal = 0;
  400.   TextFileStatusEOF    = 1;
  401.  
  402.   TextFileErrorNoFileData   = -1;
  403.   TextFileErrorLineTooLong  = -2;
  404.   TextFileErrorNoCommentEnd = -3;
  405.   TextFileErrorReadFailed   = -4;
  406.  
  407. TYPE
  408.   FileDataPtr = POINTER TO FileData;
  409.  
  410.   FileData = RECORD
  411.                fdLine    : ADDRESS;
  412.                fdLineLen : INTEGER;
  413.                fdLineNum : INTEGER
  414.              END;
  415.  
  416.   (*
  417.      mouse pointer.
  418.   *)
  419.  
  420.   PointerDataPtr = POINTER TO PointerData;
  421.  
  422.   PointerData = RECORD
  423.                   pdWidth   : BYTE;
  424.                   pdHeight  : BYTE;
  425.                   pdXOffset : BYTE;
  426.                   pdYOffset : BYTE;
  427.                   pdData    : POINTER TO WORD
  428.                 END;
  429.  
  430. PROCEDURE IGetRenderInfo(screen : ScreenPtr; flags : CARDINAL):ADDRESS;
  431.  
  432. (*
  433.   screen - puntero a la pantalla donde el objeto ISUP se debe desplegar o
  434.            NIL para usar la pantalla del Workbench.
  435.  
  436.   flags  - RenderInfoFlag...
  437.  
  438.   Retorna un puntero a una estructura de datos interna con alguna informa-
  439.   cion visual necesaria para la creacion de los objectos ISUP. Use este
  440.   MISMO puntero (solo una llamada de IGetRenderInfo para todos los objetos
  441.   ISUP desplegados en la misma pantalla) como parametro a las funciones ISUP.
  442.   Esta estructura de datos debe ser liberada con la funcion IFreeRenderInfo
  443.   ANTES de cerrar la libreria.
  444.  
  445. *)
  446.  
  447. PROCEDURE IFreeRenderInfo(ri:ADDRESS);
  448.  
  449. (*
  450.   ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
  451.  
  452.   Libera la memoria reservada por IGetRenderInfo para la estructura de datos
  453.   interna.
  454.  
  455. *)
  456.  
  457. PROCEDURE IOpenWindow(ri:ADDRESS; nw:NewWindow; flags:CARDINAL):WindowPtr;
  458.  
  459. (*
  460.  
  461.   ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
  462.  
  463.   nw - puntero a la estructura ya inicializada NewWindow.
  464.  
  465.   flags - OpenWindowFlag...
  466.  
  467.   Manipula la estructura NewWindow de acuerdo a las banderas (flags) dadas
  468.   y abre la ventana. Retorna el puntero a la ventana abierta o NIL si no se
  469.   pudo.
  470.  
  471. *)
  472.  
  473. PROCEDURE IClearRenderWindow(ri:ADDRESS; win:WindowPtr; 
  474.                              leftedge, topedge, width, height,
  475.                              flags:LONGCARD);
  476.  
  477. (*
  478.   ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
  479.  
  480.   win - puntero a la ventana abierta por IOpenWindow.
  481.  
  482.   leftedge, topedge, width, height - dimensiones y posicion del area a limpiar
  483.  
  484.   flags - ClearWindowFlag...
  485.  
  486.   Limpia el area de la ventana dada de acuerdo a la informacion visual (ri).
  487.   El area sera recortada (clipped) a las dimensiones de la ventana si es
  488.   necesario.
  489. *)
  490.  
  491. PROCEDURE ICloseWindow(win:WindowPtr; morewindows:BOOLEAN);
  492.  
  493. (*
  494.   win - puntero a la ventana abierta por IOpenWindow.
  495.  
  496.   morewindows - TRUE si el UserPort^ de la ventana es compartido con otras.
  497.  
  498.   Cierra la ventana de una manera sana (todos los IntuiMessages son respon-
  499.   didos, se cierra el UserPort^ solamente si no es compartido.
  500.  
  501. *)
  502.  
  503. PROCEDURE IAvailFonts(ri:ADDRESS):AvailFontsHeaderPtr;
  504.  
  505. (*
  506.   ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
  507.  
  508.   Crea una lista de todos los fonts (ROM + Disk) y las deja en la estructura
  509.   ri.
  510. *)
  511.  
  512. PROCEDURE IAskFont(ri:ADDRESS; ta:TextAttrPtr):TextAttrPtr;
  513.  
  514. (*
  515.   ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
  516.  
  517.   ta - punteor a una estructura inicializada con atributos de texto.
  518.  
  519.   Revisa si existe el font dado en la lista interna de fonts (ri ) creada
  520.   con IAvailFonts.
  521. *)
  522.  
  523. PROCEDURE IOpenFont(ri:ADDRESS; ta:TextAttrPtr):TextFontPtr;
  524.  
  525. (*
  526.   ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
  527.  
  528.   ta - puntero a una estructura inicializada con atributos de texto.
  529.  
  530.   Abre el font de acuerdo a la estructura TextAttr dada de la lista interna
  531.   en ri.
  532. *)
  533.  
  534. PROCEDURE IDisplayTexts(ri:ADDRESS; win:WindowPtr; td:TextDataPtr;
  535.                         hoffset:INTEGER; voffset:INTEGER;
  536.                         languagetextarray:DADDRESS);
  537.  
  538. (*
  539.   ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
  540.  
  541.   win - puntero a la ventana abierta por IOpenWindow
  542.  
  543.   td - puntero a un arreglo de estructuras TextData inicializadas. 
  544.  
  545.   hoffset, voffset - diferencias agregadas a las posiciones de TODO texto.
  546.  
  547.   languagetextarray - puntero a un arreglo de punteros a strings creados con
  548.                       IBuildLanguageTextArray o NIL.
  549.  
  550.  
  551.   Despliega el texto descrito en el arreglo dado, Si languagetextarray no
  552.   es NIL entonces tdText no contiene un puntero a string si no un offset del
  553.   puntero al string en el arreglo con punteros a texto en otros lenguajes.
  554.  
  555. *)
  556.  
  557. PROCEDURE IPrintText(ri:ADDRESS; win:WindowPtr; text:ADDRESS;
  558.                      leftedge, topedge, type:CARDINAL; flags:LONGCARD;
  559.                      textattr : TextAttrPtr):CARDINAL;
  560.  
  561. (*
  562.   ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
  563.  
  564.   win - puntero a la ventana abierta con IOpenWindow
  565.  
  566.   text - puntero al string con texto
  567.  
  568.   leftedge, topedge - posicion del texto
  569.  
  570.   type - TextDataType...
  571.  
  572.   flags - TextDataFlag...
  573.  
  574.   textattr - font usado para texto
  575.  
  576.   Despliega texto en la posicion dada
  577. *)
  578.  
  579. PROCEDURE IConvertUnsignedDec(num:LONGCARD; buffer:ADDRESS; flags:CARDINAL):CARDINAL;
  580.  
  581. (*
  582.   num - numero a convertir
  583.  
  584.   buffer - puntero al buffer para el numero convertido
  585.  
  586.   flags - ConvertFlag...
  587.  
  588.   Convierte un numero binario a un string en formato decimal sin signo.
  589. *)
  590.  
  591. PROCEDURE IConvertSignedDec(num:LONGINT; buffer:ADDRESS; flags:CARDINAL):CARDINAL;
  592.  
  593. (*
  594.   num - numero a convertir
  595.  
  596.   buffer - puntero al buffer para el numero convertido
  597.  
  598.   flags - ConvertFlag...
  599.  
  600.   Convierte un numero binario a un string en formato decimal sin signo.
  601. *)
  602.  
  603. PROCEDURE IConvertHex(num:LONGCARD; buffer:ADDRESS; flags:CARDINAL):CARDINAL;
  604.  
  605. (*
  606.   num - numero a convertir
  607.  
  608.   buffer - puntero al buffer para el numero convertido
  609.  
  610.   flags - ConvertFlag...
  611.  
  612.   Convierte un numero binario a un string en formato hexadecimal.
  613. *)
  614.  
  615. PROCEDURE IConvertBin(num:LONGCARD; buffer:ADDRESS; flags:CARDINAL):CARDINAL;
  616.  
  617. (*
  618.   num - numero a convertir
  619.  
  620.   buffer - puntero al buffer para el numero convertido
  621.  
  622.   flags - ConvertFlag...
  623.  
  624.   Convierte un numero binario a un string en formato binario.
  625. *)
  626.  
  627. PROCEDURE IDisplayBorders(ri:ADDRESS; win:WindowPtr; bd:BorderDataPtr;
  628.                           hoffset, voffset:INTEGER);
  629.  
  630. (*
  631.   ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
  632.  
  633.   win - puntero a la ventana abierta con IOpenWindow
  634.  
  635.   td - puntero a un arreglo de BorderData inicializado
  636.  
  637.   hoffset, voffset - offset sumado a la posicion de todo borde.
  638.  
  639.   Despliega borders descritos en el arreglo dado.
  640. *)
  641.  
  642. PROCEDURE IDrawBorder(ri:ADDRESS; win:WindowPtr; leftedge, topedge,
  643.                       width, height, type:LONGCARD);
  644.  
  645. (*
  646.   ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
  647.  
  648.   win - puntero a la ventana abierta con IOpenWindow
  649.  
  650.   leftedge, topedge, width, height - dimension del borde
  651.  
  652.   type - BorderDataType...
  653.  
  654.   Dibuja un borde en la posicion dada.
  655. *)
  656.  
  657. PROCEDURE ICreateGadgets(ri:ADDRESS; gd:GadgetDataPtr; 
  658.                          hoffset, voffset:INTEGER;
  659.                          languagetextarray:DADDRESS):ADDRESS;
  660.  
  661. (*
  662.   ri - puntero a una estructura de datos interna retornada por IGetRenderInfo
  663.  
  664.   gd - puntero al arreglo que contiene las descripciones de GadgetData
  665.  
  666.   hoffset, voffset - offsets sumados a las posiciones de los gadgets
  667.  
  668.   languagetextarray - puntero al arreglos de punteros a strings creados con
  669.                       IBuildLanguageTextArray o NIL
  670.  
  671.   Crea una estructura de datos interna para los gadgets ISUP dado un arreglo
  672.   de estructuras de datos. Esta funcion no despliega ningun objeto. El des-
  673.   pliegue se realiza con IDisplayGadgets. La estructura de datos interna DEBE
  674.   ser liberada con IFreeGadgets. Si se da un languagetextarray entonces 
  675.   gdTextArray no contiene un puntero a un string sino que un offset de
  676.   punteros de string en el arreglo dado con punteros a texto en otro lenguaje.
  677.  
  678. *)
  679.  
  680. PROCEDURE IFreeGadgets(gl:ADDRESS);
  681.  
  682. (*
  683.   gl - puntero a una estructura de datos retornada por ICreateGadgets
  684.  
  685.   Libera la memoria para la estructura de datos reservada con ICreateGadgets
  686.   Si los gadgets se estan desplegando entonces debe de ser removidos con
  687.   IRemoveGadgets primero.
  688. *)
  689.  
  690. PROCEDURE IDisplayGadgets(win:WindowPtr; gl:ADDRESS);
  691.  
  692. (*
  693.   win - puntero a la ventana abierta con IOpenWindow
  694.  
  695.   gl - puntero a la estructura de datos retornada por ICreateGadgets
  696.  
  697.  
  698.   Despliega todos los gadgets dados en la estructura de datos interna
  699.   (ahora los gadgets son seleccionables). Para removerlos del depsliegue
  700.   se usa IRemoveGadgets (los gadgets ya no seran seleccionables).
  701. *)
  702.  
  703. PROCEDURE IRefreshGadgets(gl:ADDRESS);
  704.  
  705. (*
  706.   gl - puntero a estructuras de datos retornadas por ICreateGadgets
  707.  
  708.   Refresca las imagenes de todos los gadgets dados en la estructura de
  709.   datos interna
  710. *)
  711.  
  712. PROCEDURE IModifyGadget(gl:ADDRESS; dataentry:CARDINAL; leftedge, 
  713.                         topedge:LONGINT; width, height : LONGCARD);
  714.  
  715. (*
  716.   gl - puntero a la estructura de datos interna retornada por ICreateGadgets
  717.  
  718.   dataentry - offset (en el arreglo de estructuras GadgetData) del gadget a
  719.               modificar
  720.   leftedge, topedge, width, height - nuevas dimensiones del gadget o usar
  721.                                      UseCurrentValue para no cambiar
  722.  
  723.   Reposiciona y/o cambia el tamano de un gadget. Todos los gadgets pueden ser
  724.   movidos pero algunos pueden ser modificados: buttons, sliders y scrollers.
  725. *)
  726.  
  727. PROCEDURE ISetGadgetAttributes(gl:ADDRESS; dataentry:CARDINAL;
  728.                               flagmask, flagbits:LONGCARD;
  729.                               data1, data2:LONGINT; data3:ADDRESS):LONGCARD;
  730.  
  731. (*
  732.   gl - puntero a la estructura de datos interna retornada por ICreateGadgets
  733.  
  734.   dataentry - offset (en el arreglo de estructuras GadgetData) del gadget a
  735.               modificar
  736.  
  737.   flagmask - mascara con los bits a poner para los bits a modificar
  738.  
  739.   flagbits - nuevos bits de flags (solor los bits con flag mask encendido
  740.              son cambiados)
  741.  
  742.   data1, data2, data3 - nuevos valores paralos apropiados gdSpecialData o usar
  743.                         UseCurrentValue
  744.  
  745.   Cambia los flags o los datos especiales de un gadget. No todos los miembros
  746.   pueden ser cambiados de todos los gadgets. Algunos son fijos al crearse.
  747. *)
  748.  
  749. PROCEDURE IActivateInputGadget(gl:ADDRESS; dataentry:CARDINAL);
  750.  
  751. (*
  752.   gl - puntero a la estructura de datos interna retornada por ICreateGadgets
  753.  
  754.   dataentry - offset (en el arreglo de estructuras GadgetData) del gadget a
  755.               activar
  756.  
  757.   Activa un gadget de entrada: string o integer.
  758. *)
  759.  
  760. PROCEDURE IGadgetAddress(gl:ADDRESS; dataentry:CARDINAL):GadgetPtr;
  761.  
  762. (*
  763.   gl - puntero a la estructura de datos interna retornada por ICreateGadgets
  764.  
  765.   dataentry - offset (en el arreglo de estructuras GadgetData) del gadget a
  766.               obtener un puntero de su estructura Gadget Normal
  767.  
  768.   Retorna un puntero a una estructura Gadget normal.
  769. *)
  770.  
  771. PROCEDURE IRemoveGadgets(gl:ADDRESS):WindowPtr;
  772.  
  773. (*
  774.   gl - puntero a la estructura de datos interna retornada por ICreateGadgets
  775.  
  776.   Quita todos los gadget pertenecientes a la estructura de datos interna
  777.   del despligue (ya no se pueden seleccionar). Se retorna un puntero a la
  778.   ventana donde estaban desplegados los gadgets.
  779.  
  780. *)
  781.  
  782. PROCEDURE IGetMsg(uport:MsgPortPtr):IntuiMessagePtr;
  783.  
  784. (*
  785.   uport - el UserPort de la ventana
  786.  
  787.   DEBE de ser usado en lugar de GetMsg (de Exec) para el manejo de todas
  788.   las acciones de los objetos ISUP. Para todos los eventos producidos por
  789.   obbjetos ISUP, un estructura IntuiMessage modificada es retornada, su
  790.   campo Class se pone con el valor ISupID y el campo Code contiene el offset
  791.   (en el arreglo de las estructuras GadgetData) del gadget apropiado y en
  792.   el campo IAddress reside el valor retornado por el gadget. Todas las 
  793.   estructuras especiales de IntuiMessage DEBEN ser respondidas con IReplyMsg
  794.   en lugar de ReplyMsg (de Exec).
  795.  
  796.   Ejemplo:
  797.  
  798.   msg : IntuiMessagePtr;
  799.  
  800.     LOOP
  801.           msg := IGetMsg(win^.UserPort);
  802.  
  803.           IF (msg # NIL) THEN
  804.  
  805.             IF (LONGCARD(msg^.Class) = ISupID) THEN
  806.  
  807.               CASE msg^.Code OF
  808.                 0 : | (* primer objeto *)
  809.         1 : | (* segundo objeto *)
  810.               END
  811.  
  812.             ELSIF (.... cualquier otro mensaje IDCMP) THEN
  813.  
  814.             END;
  815.  
  816.             IReplyMsg(msg)
  817.  
  818.           END
  819.  
  820.         END; (* loop *)
  821.  
  822. *)
  823.  
  824. PROCEDURE IReplyMsg(imsg:IntuiMessagePtr);
  825.  
  826. (*
  827.   imsg - IntuiMessage recibido con IGetMsg
  828.  
  829.   Responde al IntuiMessage creado por IGetMsg, DEBE usarse.
  830. *)
  831.  
  832. PROCEDURE IConvertRawKeyToASCII(imsg:IntuiMessagePtr);
  833.  
  834. (*
  835.   imsg - IntuiMessage recibido con IGetMsg
  836.  
  837.   Convierte el codigo Raw al correspondiente en la tabla ASCII.
  838. *)
  839.  
  840. PROCEDURE IAutoRequest(reqwin:WindowPtr; title,  bodytext, postext, 
  841.                        negtext:ADDRESS; posidcmpflags,
  842.                        negidcmpflags:IDCMPFlagsSet; reqflags:CARDINAL;
  843.                        languagetextarray:DADDRESS):BOOLEAN;
  844.  
  845. (*
  846.   reqwin - puntero a la ventana creado por IOpenIWindow o NIL o NIL para
  847.            la ventana del workbench.
  848.  
  849.   title - puntero al titulo de la ventana del requester o NIL para un titulo
  850.           default
  851.  
  852.   bodytext - puntero a texto para el cuerpo del requester.
  853.  
  854.   postext - puntero al texto para el gadget positivo o NIL para el texto
  855.             default
  856.  
  857.   negtext - puntero al texto para el gadget negativo o NIL para el texto
  858.             default
  859.  
  860.   posidcmpflags - IDCMP para la activacion del gadget positivo
  861.  
  862.   negidcmpflags - IDCMP para la activacion del gadget negativo
  863.  
  864.   reqflags - ReqDataFlag...
  865.  
  866.   languagetextarray - puntero al arreglo de puntero a strings creados con
  867.                       IBuildLanguageTextArray o NIL
  868.  
  869.   Despliega un autorequester segun los datos dados y espera su terminacion
  870.   el gadget positivo o negativo. Para el texto del cuerpo del requester se
  871.   delinea una nueva linea con '\n'. Si se da un languagetextarray el campo
  872.   tdText no contiene un puntero a un string sino un offset del puntero al
  873.   arreglo de punteros al texto en otros lenguages.
  874. *)
  875.  
  876. PROCEDURE IDisplayRequester(reqwin:WindowPtr; rd:RequesterDataPtr;
  877.                             languagetextarray:DADDRESS):ADDRESS;
  878.  
  879. (*
  880.   reqwin - puntero a la ventana abierta con IOpenWindow o NIL para la
  881.            ventana del workbench
  882.  
  883.   rd - puntero a una estructura RequesterData ya inicializada
  884.  
  885.   languagetextarray - puntero al arreglo de puntero a strings creados con
  886.                       IBuildLanguageTextArray o NIL
  887.  
  888.   Despliega un requester definido por una estructura RequesterData. Todos los
  889.   otros gadgets desplegados en la ventana a la que pertenece el requester
  890.   (reqwin) son paralizados hasta que se retire el requester. Cualquier
  891.   IntuiMessage con Class = ISupID recibidos por IGetMsg vienen del requester
  892.   Si se da un languagetextarray el campotdText no contiene un puntero a un
  893.   string sino un offset del puntero al arreglo de punteros al texto en otros
  894.   lenguages. Se retorna un puntero a la estructura de datos interna. El
  895.   requester DEBE ser retirado del despliegue con IRemoveRequester.
  896. *)
  897.  
  898. PROCEDURE IRemoveRequester(rl:ADDRESS);
  899.  
  900. (*
  901.   rl - puntero a la estructura de datos retornada por IDisplayRequester.
  902.  
  903.   Retira el requester del despliegue. Todos los gadgets antes paralizados
  904.   son activables de nuevo.
  905. *)
  906.  
  907. PROCEDURE ICreateMenu(ri:ADDRESS; win:WindowPtr; md:MenuDataPtr;
  908.                       ta:TextAttrPtr; languagetextarray:DADDRESS):ADDRESS;
  909.  
  910. (*
  911.   ri - puntero a la estructura retornada por IGetRenderInfo
  912.  
  913.   win - puntero a la ventana abierta por IOpenWindow
  914.  
  915.   md - puntero al arreglo inicializado de estructuras MenuData
  916.  
  917.   ta - puntero a una estructura inicializada con atributos de texto
  918.  
  919.   languagetextarray - puntero a un arreglo de punteros a stringa creados por
  920.                       IBuildLanguageTextArray o NIL
  921.  
  922.   Crea una estructura de datos interna para un menu de un arreglo de
  923.   estructuras de datos dada. Esta funcion NO despliega el menu. El despliegue
  924.   se hace con IAtachMenu. Esta estructura DEBE ser liberada con IFreeMenu
  925.   Si se da un languagetextarray el campo tdText no contiene un puntero a un
  926.   string sino un offset del puntero al arreglo de punteros al texto en otros
  927.   lenguages. Se retorna un puntero a la estructura de datos del menu.
  928. *)
  929.  
  930. PROCEDURE IAttachMenu(win:WindowPtr; ml:ADDRESS);
  931.  
  932. (*
  933.   win - puntero a la ventana abierta con IOpenWindow
  934.  
  935.   ml - puntero a la estructura de datos retornada por ICreateMenu
  936.  
  937.   Hace los menus construidos con ICreateMenu disponible al conectarla a la
  938.   ventana, el Menu DEBE ser removido con IRemoveMenu.
  939. *)
  940.  
  941. PROCEDURE IMenuItemAddress(ml:ADDRESS; menunum:CARDINAL):MenuItemPtr;
  942.  
  943. (*
  944.   ml - puntero a la estructura de datos retornados por ICreateMenu
  945.  
  946.   menunum - offset (en el arreglo de estructuras MenuData) del item para
  947.             obtener su direccion
  948.  
  949.   Retorna  un puntero a un MenuItem normal.
  950. *)
  951.  
  952. PROCEDURE IRemoveMenu(ml:ADDRESS):WindowPtr;
  953.  
  954. (*
  955.   ml - puntero a la estructura de datos retornados por ICreateMenu
  956.  
  957.   Retira el menu conectado con IAttachMenu.
  958. *)
  959.  
  960. PROCEDURE IFreeMenu(ml:ADDRESS);
  961.  
  962. (*
  963.   ml - puntero a la estructura de datos retornados por ICreateMenu
  964.  
  965.   Libera la memoria de la estructura de datos reservada por ICreateMenu
  966.   Si el menu aun esta connectad, DEBE de ser removido con IRemoveMenu antes.
  967. *)
  968.  
  969. PROCEDURE IOpenTextFile(name:ADDRESS; readbuffersize, linebuffersize,
  970.                         flags:CARDINAL):FileDataPtr;
  971.  
  972. (*
  973.   name - puntero al string con el nombre del archivo
  974.  
  975.   readbuffersize - tamano en bytes del buffer usado para leer el archivo
  976.  
  977.   linebuffersize - numero de bytes usados para la linea mas larga de texto
  978.  
  979.   flags - TextFileFla...
  980.  
  981.   Abre el archivo de texto dado y retorna un puntero a una estructura de
  982.   datos con los buffers reservados. Esta estructura DEBE de ser liberada
  983.   con ICloseTextFile
  984. *)
  985.  
  986. PROCEDURE IReadTextLine(fd:FileDataPtr):INTEGER;
  987.  
  988. (*
  989.   fd - puntero a la estructura de datos retornada por IOpenTextFile
  990.  
  991.   Lee la siguiente linea del archivo, esta linea se almecena en la estructura
  992.   FileData.
  993. *)
  994.  
  995. PROCEDURE ICloseTextFile(fd:FileDataPtr);
  996.  
  997. (*
  998.   fd - puntero a la estructura de datos retornada por IOpenTextFile
  999.  
  1000.   Cierra el archivo y libera los buffers.
  1001. *)
  1002.  
  1003. PROCEDURE IBuildLanguageTextArray(name:ADDRESS; entries:CARDINAL):DADDRESS;
  1004.  
  1005. (*
  1006.   name - puntero al string con el nombre del archivo con el texto del
  1007.          lenguage
  1008.  
  1009.   entries - numero de entradas de texto en el archivo.
  1010.  
  1011.   Pasa el texto del archivo a un arreglo de strings. Este arreglo DEBE ser 
  1012.   liberado con IFreeLanguageTextArray.
  1013. *)
  1014.  
  1015. PROCEDURE IGetLanguageText(text:ADDRESS; textarray:DADDRESS):ADDRESS;
  1016.  
  1017. (*
  1018.   text - offset (en le arreglo de texto) del texto del lenguage
  1019.          (empezando en 1 no en 0 !!!)
  1020.  
  1021.   textarray - puntero al arreglo de strings creado por
  1022.               IBuildLanguageTextArray
  1023.  
  1024.   Retorna la entrada especificada de dentro del arrglo.
  1025. *)
  1026.  
  1027. PROCEDURE IFreeLanguageTextArray(textarray:DADDRESS);
  1028.  
  1029. (*
  1030.   textarray - puntero al arreglo de texto creados por IBuilLanguageTextArray
  1031.  
  1032.   Libera la memoria del arreglo.
  1033. *)
  1034.  
  1035. PROCEDURE IChangeMousePointer(win:WindowPtr; pd:PointerDataPtr; removegadgets:BOOLEAN);
  1036.  
  1037. (*
  1038.   win - puntero a la ventana creada con IOpenWindow
  1039.  
  1040.   pd - puntero a una estructura PointerData inicializada o NIL para el
  1041.        busy pointer.
  1042.  
  1043.   Reemplaza el pointer del mouse actual se la ventana con el descrito en
  1044.   en pd. El pointer anterior se guardara y puede ser restaurado con
  1045.   IRestoreMousePointer.
  1046. *)
  1047.  
  1048. PROCEDURE IRestoreMousePointer(win:WindowPtr);
  1049.  
  1050. (*
  1051.   win - puntero a la ventana abierta con IOpenWindow
  1052.  
  1053.   Restaura el pointer anterior de mouse cambiado con IChangeMousePointer
  1054. *)
  1055.  
  1056. PROCEDURE IMoveMousePointer(win:WindowPtr; x,y:INTEGER; button:BOOLEAN);
  1057.  
  1058. (*
  1059.   win - puntero a la ventana abierta con IOpenWindow
  1060.  
  1061.   x, y - nueva posicion, relativa a la esquina superior izquierda de
  1062.          la ventana.
  1063.  
  1064.   button - TRUE para que le boton izquierdo sea presionado
  1065.  
  1066.   Mueve el pointer del mouse de una ventana a una nueva posicion.
  1067. *)
  1068.  
  1069. (* ------------------------- Funciones de apoyo --------------------------*)
  1070.  
  1071. PROCEDURE InputAutoActive(next,prev:LONGINT):LONGINT;
  1072.  
  1073. PROCEDURE InitIntuiSupLibNoVer():BOOLEAN;
  1074.  
  1075. PROCEDURE InitIntuiSupLib():BOOLEAN;
  1076.  
  1077. PROCEDURE CloseIntuiSupLib();
  1078.  
  1079. END IntuiSupInterface.
  1080.